package heranca.classesbasicas;
import heranca.exceptions.DadosInvalidosException;
import heranca.exceptions.TipoAcessorIncompativelException;


public class FuncionarioChefe extends Funcionario{

	private double valorInicial;
	private double gratificacao;
	private Funcionario funcionarioAssessor;
	
	public FuncionarioChefe() {
		super();		
	}


	public FuncionarioChefe(String cpf, String nome, int idade, double valorInicial, double gratificacao,
			Funcionario assessor) throws DadosInvalidosException, TipoAcessorIncompativelException {
		super(cpf, nome, idade, valorInicial + gratificacao);
		this.valorInicial = valorInicial;
		this.gratificacao = gratificacao;
		
		if(assessor instanceof FuncionarioHorario || assessor instanceof FuncionarioChefe){
			TipoAcessorIncompativelException e = 
				new TipoAcessorIncompativelException();
			throw e;
		}else{
			this.funcionarioAssessor = assessor;
		}
		
	}

	public double getValorInicial() {
		return valorInicial;
	}

	public void setValorInicial(double valorInicial) {
		this.valorInicial = valorInicial;
	}

	public double getGratificacao() {
		return gratificacao;
	}

	public void setGratificacao(double gratificacao) {
		this.gratificacao = gratificacao;
	}

	public Funcionario getFuncionarioAssessor() {
		return funcionarioAssessor;
	}

	public void setFuncionarioAssessor(Funcionario funcionarioAssessor) {
		this.funcionarioAssessor = funcionarioAssessor;
	}

	@Override
	public double obterSalario() {
		return this.valorInicial + this.gratificacao;
	}

	@Override
	public String toString() {
		String nomeAcessor;
		if(this.funcionarioAssessor != null){
			nomeAcessor = this.funcionarioAssessor.getNome();
		}else{
			nomeAcessor = "";
		}
		
		return this.getCpf() + " - " + this.getNome() +
		", " + this.getIdade() + " : " + this.obterSalario() + "(FC) Assessor: " + nomeAcessor; 
		
	}
	
	
	
	
}
